<?php

/**
 * 预存款相关接口
 * 
 * @author lvchang <lvchang@shopexunit.com>       
 */
class mobileapi_rpc_deposits extends mobileapi_frontpage {

    /**
     * 公开构造方法
     * 
     * @params app object
     * 
     * @return null
     */
    public function __construct($app) {
        parent::__construct($app);
        $this->app = $app;
        // 检测用户是否登陆
        $this->verify_member();
        // 获取当前用户信息
        $this->member = $this->get_current_member();
        // 初始化rpc service
        $this->app->rpcService = kernel::single('base_rpc_service');
        // 请求参数防注入
        $this->data_post = $this->_check_input($_POST);
    }

    /**
     * 获取预存款概要信息
     * 
     * @return array result
     * 
     * @author lvchang <lvchang@shopexunit.com>
     */
    public function get_info() {
        $result = array();

        //获取现有预存款总额
        $b2capp = app::get("b2c");
        $objMember = $b2capp->model('members');
        $row = $objMember->dump($this->app->member_id, 'advance');
        $result['total'] = $row['advance']['total'];

        //获取支出总额 及 收入总额
        $order_row = kernel::single('b2c_mdl_member_advance')
                ->getList('sum(import_money) import,sum(explode_money) explode'
                , array('member_id' => $this->app->member_id), $offset = 0, $limit = -1);
        $result['import'] = !$order_row[0]['import'] ? 0 : $order_row[0]['import'];
        $result['explode'] = !$order_row[0]['explode'] ? 0 : $order_row[0]['explode'];

        return $result;
    }

    /**
     * 获取预存款详细流水信息
     * 
     *  @param int $_POST['log_id'] 支付号排序
     * 
     * @return array serial_list
     * 
     * @author lvchang <lvchang@shopexunit.com>
     */
    public function get_serial_list() {
        // 从请求参数中初始化log_id
        $log_id = isset($_POST['log_id']) ? intval($_POST['log_id']) : 0;

        // 组装查询条件
        $where['member_id'] = $this->app->member_id;
        if ($log_id != 0)
            $where[] = 'log_id < ' . $log_id;
        //根据member_id获取预存款列表  根据上一个log_id进行分页
        $serial_list = kernel::single('b2c_mdl_member_advance')
                ->getList('*', $where
                , $offset = 0, $limit = 10, 'log_id < ' . $log_id . ',log_id DESC');

        return $serial_list;
    }

    /**
     * 预存款支付状态查询
     * 
     * @param int $_POST['log_id'] 支付号
     * 
     * @return bool true:支付成功 or false:待支付
     * 
     * @author lvchang <lvchang@shopexunit.com>
     */
    public function check_pay_status() {
        // 从请求参数中初始化log_id
        $log_id = isset($_POST['log_id']) ? intval($_POST['log_id']) : 0;
        // log_id为0时报错
        if ($log_id == 0) {
            $this->app->rpcService->send_user_error('4003', '错误的支付号');
        }

        //根据log_id获取预存款数据
        $serial_row = kernel::single('b2c_mdl_member_advance')
                ->getRow('*', array('log_id' => $log_id));

        //未获取到预存款数据
        if (empty($serial_row))
            $this->app->rpcService->send_user_error('4003', '没有此支付，请检查支付号');
        //提取预存款订单  订单状态即为支付状态
        if (isset($serial_row['order_id']) && $serial_row['order_id']) {
            $tmp_order = array();
            $tmp_order = kernel::single('b2c_mdl_orders')
                    ->getRow(
                    '*', array('order_id' => $serial_row['order_id'])
            );

            //未获取到订单数据
            if (empty($tmp_order)) {
                $this->app->rpcService->send_user_error('4003', '此支付订单号错误');
            }
            //订单支付状态
            $res = $tmp_order['pay_status'] == 1 ? true : false;
            return $res;
        }

        return true;
    }

    /**
     * 过滤POST来的数据,基于安全考虑,会把POST数组中带HTML标签的字符过滤掉
     * 
     * @param array $data 这里的参数是什么格式的？
     * 
     * @return array $aData 返回格式是什么格式的？
     * 
     * @author lvchang <lvchang@shopexunit.com>
     */
    private function _check_input($data) {
        $aData = $this->_arrContentReplace($data);

        return $aData;
    }

    /**
     * 过滤POST来的数据
     * 
     * @param array $array
     * 
     * @return array $array
     * 
     * @author lvchang <lvchang@shopexunit.com>
     */
    private function _arrContentReplace($array) {
        if (is_array($array)) {
            foreach ($array as $key => $v) {
                $array[$key] = $this->_arrContentReplace($array[$key]);
            }
        } else {
            $array = strip_tags($array);
        }

        return $array;
    }

}
